﻿using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Cms.Domain;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Cms.Tests.Unit.Domain
{

    [TestClass]
    public class SourceCodeVersionTests
    {

        #region Additional test attributes
        //
        // You can use the following additional attributes as you write your tests:
        //
        // Use ClassInitialize to run code before running the first test in the class
        // [ClassInitialize()]
        // public static void MyClassInitialize(TestContext testContext) { }
        //
        // Use ClassCleanup to run code after all tests in a class have run
        // [ClassCleanup()]
        // public static void MyClassCleanup() { }
        //
        // Use TestInitialize to run code before running each test 
        // [TestInitialize()]
        // public void MyTestInitialize() { }
        //
        // Use TestCleanup to run code after each test has run
        // [TestCleanup()]
        // public void MyTestCleanup() { }
        //
        #endregion

        [TestMethod]
        public void TestCloneSourceCodeVersion()
        {
            Administrator admin = new Administrator();
            SourceCode sourceCode = new SourceCode();
            SourceCodeVersion original = new SourceCodeVersion
                                             {
                                                 ID = 1,
                                                 Timestamp = DateTime.Now.Ticks.ToString(),
                                                 EditedBy = admin,
                                                 Code = "some code",
                                                 Parent = sourceCode
                                             };
            SourceCodeVersion clone = (SourceCodeVersion)original.Clone();
            Assert.AreEqual(0, clone.ID);
            Assert.IsNull(clone.Parent);
            Assert.AreEqual(original.Code, clone.Code);
            Assert.AreEqual(original.EditedBy, clone.EditedBy);
            Assert.AreEqual(original.Timestamp, clone.Timestamp);
        }

    }

}
